package com.itany.nmms.service;

import com.github.pagehelper.PageInfo;
import com.itany.nmms.entity.Dept;
import com.itany.nmms.entity.Staff;
import com.itany.nmms.exception.*;

import java.util.List;

/**
* @author 黄衡熙
* @version 1.0 
*/
public interface DeptService {
    /**
     * 添加父部门
     * 最后一个字段是当前登录进来的是谁
     * @param name
     * @param remark
     */
    void addFatherDept(String name, String remark, Staff staff) throws RequestParameterErrorException, DeptExistException, LoginDisabledException;

    /**
     * 添加子孙部门
     * 多一个父部门id
     */
    void addSonDept(String fatherId,String name,String remark,Staff staff) throws RequestParameterErrorException, LoginDisabledException, DeptExistException;

    /**
     * 分页查询
     */
    PageInfo<Dept> findPage(String pageNo,String pageSize);

    /**
     * 根据部门id查询
     */
    Dept findById(String id) throws RequestParameterErrorException;


    /**
     * 修改
     */
    void modifyDept(String id,String name,String remark) throws RequestParameterErrorException, DeptExistException;

    /**
     * 启用部门
     * 需判断商机部门的状态
     * 当部门的父部门是启用状态时，才可以启用部门
     */
    void enabledDept(String id) throws RequestParameterErrorException, DeptStatusException;

    /**
     * 禁用部门
     * 当父部门禁用时 其所有的子孙部门也一同被禁用
     */
    void disabledDept(String id) throws RequestParameterErrorException;

    /**
     * 查询所有
     */
    List<Dept> findAll();


}
